package com.cnd.scm.rabbitmq.common;

import org.springframework.amqp.rabbit.core.RabbitTemplate;

/**
 * @version V1.0
 * @InterfaceName: MessageSender
 * @Description: MessageSender 消息发送者 对应提供的服务接口
 * @author: 李启联
 * @date: 2021-03-17 16:23
 * @Copyright: Copyright (c) 2021
 */
public interface MessageSender {


    void setRabbitTemplate(RabbitTemplate rabbitTemplate);


    /**
     * 向发送消息容器增加要发送的消息
     * @param messageLog
     */
    void storeMessage(MessageLog messageLog);

    /**
     * 更新保存在容器中投递消息的状态
     * @param status 消息状态
     * @param msgId   消息ID
     */
    void updateStatus(MessageStatusEnum status,String msgId);


    /**
     * 删除发送容器中的一条消息
     * @param id
     */
    void delMessage(String id);

    /**
     * 发送消息
     * @param message
     * @return
     */
    DetailResponse send(Object message);

    /**
     * 发送消息
     * @param messageLog
     * @return
     */
    DetailResponse send(MessageLog messageLog);

    /**
     * 开启重试发送机制
     */
    void retry();

}